﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using FM.Common;
using FM.Events;
using FM.Services;
using FM.录音.Services;
using FM.录音.接口;
using Microsoft.Practices.Prism.PubSubEvents;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Unity;

namespace FM.录音
{
    public class 系统初始化 : 启动基类
    {
        public 系统初始化(IUnityContainer 人事部cs, IEventAggregator 新闻部cs, IRegionManager 行政部cs)
            : base(人事部cs, 新闻部cs, 行政部cs)
        {
        }

        public override void 启动()
        {
            base.启动();
            人事部.Resolve<I系统配置服务>().启动();
 

            读取配置();

            加载状态栏();

            加载菜单栏();

            加载录音视图组();


            Application.Current.MainWindow.Closed += MainWindow_Closed;
        }

        void MainWindow_Closed(object sender, EventArgs e)
        {
            新闻部.GetEvent<退出Event>().Publish(null);
        }

        private void 加载录音视图组()
        {
            行政部.RegisterViewWithRegion(布局位置.中, () =>
            {
                var 视图2 = 人事部.Resolve<Views.录音视图组>();
                视图2.LoadViewModel();
                return 视图2;
            });
        }

        private void 加载菜单栏()
        {
            行政部.RegisterViewWithRegion(布局位置.上, () =>
            {
                var 视图2 = 人事部.Resolve<Views.菜单>();
                视图2.LoadViewModel();
                return 视图2;
            });
        }

        private void 加载状态栏()
        {
            行政部.RegisterViewWithRegion(布局位置.下, () =>
            {
                var 视图2 = 人事部.Resolve<Views.状态栏>();
                视图2.LoadViewModel();
                return 视图2;
            });
        }


        private void 读取配置()
        {
            var 配置读写 = 人事部.Resolve<I系统配置服务>();
            var 配置1 = 配置读写.读取(false);
            var win = Application.Current.MainWindow;
            win.Left = 配置1.左;
            win.Top = 配置1.上;
            win.Width = 配置1.宽;
            win.Height = 配置1.高;
            win.Title = 配置1.名称;
            Telerik主题.设置主题(配置1.主题);

        }
    }
}